package com.yunke.vo.chat;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * 聊天会话VO
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@Schema(description = "聊天会话信息")
public class YunkeChatVo {

    /**
     * 聊天室ID
     */
    @Schema(description = "聊天室ID")
    private String chatId;

    /**
     * 对方用户信息
     */
    @Schema(description = "对方用户信息")
    private UserInfo otherUser;

    /**
     * 聊天类型文本
     */
    @Schema(description = "聊天类型文本")
    private String chatTypeText;

    /**
     * 最后一条消息内容
     */
    @Schema(description = "最后一条消息内容")
    private String lastMessage;

    /**
     * 最后一条消息类型文本
     */
    @Schema(description = "最后一条消息类型文本")
    private String lastMessageTypeText;

    /**
     * 最后一条消息时间
     */
    @Schema(description = "最后一条消息时间")
    private Long lastMessageTime;

    /**
     * 最后一条消息时间文本
     */
    @Schema(description = "最后一条消息时间文本")
    private String lastMessageTimeText;

    /**
     * 是否是我发送的最后一条消息
     */
    @Schema(description = "是否是我发送的最后一条消息")
    private Boolean isMyLastMessage;

    /**
     * 未读消息数
     */
    @Schema(description = "未读消息数")
    private Integer unreadCount;

    /**
     * 是否置顶
     */
    @Schema(description = "是否置顶")
    private Boolean isTop;

    /**
     * 是否免打扰
     */
    @Schema(description = "是否免打扰")
    private Boolean isMute;

    /**
     * 聊天状态文本
     */
    @Schema(description = "聊天状态文本")
    private String statusText;

    /**
     * 是否在线
     */
    @Schema(description = "对方是否在线")
    private Boolean isOnline;

    /**
     * 最后上线时间
     */
    @Schema(description = "最后上线时间")
    private String lastOnlineTime;

    /**
     * 用户信息
     */
    @Data
    @Schema(description = "用户信息")
    public static class UserInfo {
        @Schema(description = "用户ID")
        private Long userId;

        @Schema(description = "昵称")
        private String nickname;

        @Schema(description = "头像")
        private String avatar;

        @Schema(description = "性别：1-男 2-女 3-未知")
        private Integer gender;

        @Schema(description = "性别文本")
        private String genderText;

        @Schema(description = "年龄")
        private Integer age;

        @Schema(description = "认证状态")
        private Integer authStatus;

        @Schema(description = "认证状态文本")
        private String authStatusText;

        @Schema(description = "VIP等级")
        private Integer vipLevel;

        @Schema(description = "VIP等级文本")
        private String vipLevelText;

        @Schema(description = "是否在线")
        private Boolean isOnline;
    }
} 